﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;

namespace Nature.Data
{

	
	/// <summary>
    /// ModelEntities
    /// </summary>
	public partial class ModelEntities : IModelEntities
	{
		partial void OnCreated(); 
		 
		public ModelEntities() { OnCreated(); } 
		public ModelEntities(IModelEntities other) 
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IModelEntities other)
		{ 
		}

		public void CopyTo(ModelEntities other)
		{ 
		}

		 
	} 
	
	/// <summary>
    /// ChemicalSpecies
    /// </summary>
	public partial class ChemicalSpecies : IChemicalSpecies
	{
		partial void OnCreated(); 
		 
		public ChemicalSpecies() { OnCreated(); } 
		public ChemicalSpecies(IChemicalSpecies other) 
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IChemicalSpecies other)
		{ 
			this.SpeciesID = other.SpeciesID;  
			this.SpeciesMolarMass = other.SpeciesMolarMass;  
			this.Thermo7 = other.Thermo7;  
			this.GasKinParameters = other.GasKinParameters;  
		}

		public void CopyTo(ChemicalSpecies other)
		{ 
			other.SpeciesID = this.SpeciesID;  
			other.SpeciesMolarMass = this.SpeciesMolarMass;  
			other.Thermo7 = this.Thermo7;  
			other.GasKinParameters = this.GasKinParameters;  
		}

		 
		/// <summary>
		/// SpeciesID
		/// </summary>
		public string SpeciesID { get; internal set; }  
		/// <summary>
		/// SpeciesMolarMass
		/// </summary>
		public double SpeciesMolarMass { get; internal set; }  
		/// <summary>
		/// Thermo7
		/// </summary>
		public Thermo7 Thermo7 { get; internal set; }  
		/// <summary>
		/// GasKinParameters
		/// </summary>
		public GasKinParameters GasKinParameters { get; internal set; }  
	} 
	
	/// <summary>
    /// ChemicalElement
    /// </summary>
	public partial class ChemicalElement : IChemicalElement
	{
		partial void OnCreated(); 
		 
		public ChemicalElement() { OnCreated(); } 
		public ChemicalElement(IChemicalElement other) 
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IChemicalElement other)
		{ 
			this.ElementID = other.ElementID;  
			this.ElementName = other.ElementName;  
			this.ElementMolarMass = other.ElementMolarMass;  
		}

		public void CopyTo(ChemicalElement other)
		{ 
			other.ElementID = this.ElementID;  
			other.ElementName = this.ElementName;  
			other.ElementMolarMass = this.ElementMolarMass;  
		}

		 
		/// <summary>
		/// ElementID
		/// </summary>
		public string ElementID { get; internal set; }  
		/// <summary>
		/// ElementName
		/// </summary>
		public string ElementName { get; internal set; }  
		/// <summary>
		/// ElementMolarMass
		/// </summary>
		public double ElementMolarMass { get; internal set; }  
	} 
	
	/// <summary>
    /// AtomsPerMoleculeAmount
    /// </summary>
	public partial class AtomsPerMoleculeAmount : IAtomsPerMoleculeAmount
	{
		partial void OnCreated(); 
		 
		public AtomsPerMoleculeAmount() { OnCreated(); } 
		public AtomsPerMoleculeAmount(IAtomsPerMoleculeAmount other) 
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IAtomsPerMoleculeAmount other)
		{ 
			this.SpeciesID = other.SpeciesID;  
			this.ElementID = other.ElementID;  
			this.AtomsPerMolecule = other.AtomsPerMolecule;  
		}

		public void CopyTo(AtomsPerMoleculeAmount other)
		{ 
			other.SpeciesID = this.SpeciesID;  
			other.ElementID = this.ElementID;  
			other.AtomsPerMolecule = this.AtomsPerMolecule;  
		}

		 
		/// <summary>
		/// SpeciesID
		/// </summary>
		public string SpeciesID { get; internal set; }  
		/// <summary>
		/// ElementID
		/// </summary>
		public string ElementID { get; internal set; }  
		/// <summary>
		/// AtomsPerMolecule
		/// </summary>
		public double AtomsPerMolecule { get; internal set; }  
	} 
	
	/// <summary>
    /// Thermo7Range
    /// </summary>
	public partial struct Thermo7Range : IThermo7Range
	{
		partial void OnCreated(); 
		
		public Thermo7Range(IThermo7Range other) : this()
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IThermo7Range other)
		{ 
			this.Tmin = other.Tmin;  
			this.Tmax = other.Tmax;  
			this.A1 = other.A1;  
			this.A2 = other.A2;  
			this.A3 = other.A3;  
			this.A4 = other.A4;  
			this.A5 = other.A5;  
			this.A6 = other.A6;  
			this.A7 = other.A7;  
		}

		public void CopyTo(Thermo7Range other)
		{ 
			other.Tmin = this.Tmin;  
			other.Tmax = this.Tmax;  
			other.A1 = this.A1;  
			other.A2 = this.A2;  
			other.A3 = this.A3;  
			other.A4 = this.A4;  
			other.A5 = this.A5;  
			other.A6 = this.A6;  
			other.A7 = this.A7;  
		}

		 
		/// <summary>
		/// Tmin
		/// </summary>
		public double Tmin { get; internal set; }  
		/// <summary>
		/// Tmax
		/// </summary>
		public double Tmax { get; internal set; }  
		/// <summary>
		/// A1
		/// </summary>
		public double A1 { get; internal set; }  
		/// <summary>
		/// A2
		/// </summary>
		public double A2 { get; internal set; }  
		/// <summary>
		/// A3
		/// </summary>
		public double A3 { get; internal set; }  
		/// <summary>
		/// A4
		/// </summary>
		public double A4 { get; internal set; }  
		/// <summary>
		/// A5
		/// </summary>
		public double A5 { get; internal set; }  
		/// <summary>
		/// A6
		/// </summary>
		public double A6 { get; internal set; }  
		/// <summary>
		/// A7
		/// </summary>
		public double A7 { get; internal set; }  
	} 
	
	/// <summary>
    /// Thermo7
    /// </summary>
	public partial class Thermo7 : IThermo7
	{
		partial void OnCreated(); 
		 
		public Thermo7() { OnCreated(); } 
		public Thermo7(IThermo7 other) 
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IThermo7 other)
		{ 
			this.SpeciesID = other.SpeciesID;  
			this.Ranges = other.Ranges;  
		}

		public void CopyTo(Thermo7 other)
		{ 
			other.SpeciesID = this.SpeciesID;  
			other.Ranges = this.Ranges;  
		}

		 
		/// <summary>
		/// SpeciesID
		/// </summary>
		public string SpeciesID { get; internal set; }  
		/// <summary>
		/// Ranges
		/// </summary>
		public ReadOnlyArray<Thermo7Range> Ranges { get; internal set; }  
	} 
	
	/// <summary>
    /// Gas kinetic parameters
    /// </summary>
	public partial class GasKinParameters : IGasKinParameters
	{
		partial void OnCreated(); 
		 
		public GasKinParameters() { OnCreated(); } 
		public GasKinParameters(IGasKinParameters other) 
		{ 
			CopyFrom(other);
			OnCreated(); 
		}

		public void CopyFrom(IGasKinParameters other)
		{ 
			this.SpeciesID = other.SpeciesID;  
			this.Alpha = other.Alpha;  
			this.Epsilon = other.Epsilon;  
			this.GeometryIndex = other.GeometryIndex;  
			this.Mu = other.Mu;  
			this.Sigma = other.Sigma;  
			this.Zrot = other.Zrot;  
		}

		public void CopyTo(GasKinParameters other)
		{ 
			other.SpeciesID = this.SpeciesID;  
			other.Alpha = this.Alpha;  
			other.Epsilon = this.Epsilon;  
			other.GeometryIndex = this.GeometryIndex;  
			other.Mu = this.Mu;  
			other.Sigma = this.Sigma;  
			other.Zrot = this.Zrot;  
		}

		 
		/// <summary>
		/// SpeciesID
		/// </summary>
		public string SpeciesID { get;  set; }  
		/// <summary>
		/// Alpha
		/// </summary>
		public double Alpha { get;  set; }  
		/// <summary>
		/// Epsilon
		/// </summary>
		public double Epsilon { get;  set; }  
		/// <summary>
		/// GeometryIndex
		/// </summary>
		public int GeometryIndex { get;  set; }  
		/// <summary>
		/// Mu
		/// </summary>
		public double Mu { get;  set; }  
		/// <summary>
		/// Sigma
		/// </summary>
		public double Sigma { get;  set; }  
		/// <summary>
		/// Zrot
		/// </summary>
		public double Zrot { get;  set; }  
	} 
	
	/// <summary>
    /// ModelEntities
    /// </summary>
	public interface IModelEntities
	{ 
	} 
	
	/// <summary>
    /// ChemicalSpecies
    /// </summary>
	public interface IChemicalSpecies
	{ 
		/// <summary>
		/// SpeciesID
		/// </summary>
		string SpeciesID { get; }  
		/// <summary>
		/// SpeciesMolarMass
		/// </summary>
		double SpeciesMolarMass { get; }  
		/// <summary>
		/// Thermo7
		/// </summary>
		Thermo7 Thermo7 { get; }  
		/// <summary>
		/// GasKinParameters
		/// </summary>
		GasKinParameters GasKinParameters { get; }  
	} 
	
	/// <summary>
    /// ChemicalElement
    /// </summary>
	public interface IChemicalElement
	{ 
		/// <summary>
		/// ElementID
		/// </summary>
		string ElementID { get; }  
		/// <summary>
		/// ElementName
		/// </summary>
		string ElementName { get; }  
		/// <summary>
		/// ElementMolarMass
		/// </summary>
		double ElementMolarMass { get; }  
	} 
	
	/// <summary>
    /// AtomsPerMoleculeAmount
    /// </summary>
	public interface IAtomsPerMoleculeAmount
	{ 
		/// <summary>
		/// SpeciesID
		/// </summary>
		string SpeciesID { get; }  
		/// <summary>
		/// ElementID
		/// </summary>
		string ElementID { get; }  
		/// <summary>
		/// AtomsPerMolecule
		/// </summary>
		double AtomsPerMolecule { get; }  
	} 
	
	/// <summary>
    /// Thermo7Range
    /// </summary>
	public interface IThermo7Range
	{ 
		/// <summary>
		/// Tmin
		/// </summary>
		double Tmin { get; }  
		/// <summary>
		/// Tmax
		/// </summary>
		double Tmax { get; }  
		/// <summary>
		/// A1
		/// </summary>
		double A1 { get; }  
		/// <summary>
		/// A2
		/// </summary>
		double A2 { get; }  
		/// <summary>
		/// A3
		/// </summary>
		double A3 { get; }  
		/// <summary>
		/// A4
		/// </summary>
		double A4 { get; }  
		/// <summary>
		/// A5
		/// </summary>
		double A5 { get; }  
		/// <summary>
		/// A6
		/// </summary>
		double A6 { get; }  
		/// <summary>
		/// A7
		/// </summary>
		double A7 { get; }  
	} 
	
	/// <summary>
    /// Thermo7
    /// </summary>
	public interface IThermo7
	{ 
		/// <summary>
		/// SpeciesID
		/// </summary>
		string SpeciesID { get; }  
		/// <summary>
		/// Ranges
		/// </summary>
		ReadOnlyArray<Thermo7Range> Ranges { get; }  
	} 
	
	/// <summary>
    /// Gas kinetic parameters
    /// </summary>
	public interface IGasKinParameters
	{ 
		/// <summary>
		/// SpeciesID
		/// </summary>
		string SpeciesID { get; }  
		/// <summary>
		/// Alpha
		/// </summary>
		double Alpha { get; }  
		/// <summary>
		/// Epsilon
		/// </summary>
		double Epsilon { get; }  
		/// <summary>
		/// GeometryIndex
		/// </summary>
		int GeometryIndex { get; }  
		/// <summary>
		/// Mu
		/// </summary>
		double Mu { get; }  
		/// <summary>
		/// Sigma
		/// </summary>
		double Sigma { get; }  
		/// <summary>
		/// Zrot
		/// </summary>
		double Zrot { get; }  
	} 
 
}